YES 1.227 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/List.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ BR

mainModule List
  ((isSuffixOf :: [Ordering ->  [Ordering ->  Bool) :: [Ordering ->  [Ordering ->  Bool)

module List where
  import qualified Maybe
import qualified Prelude

  isPrefixOf :: Eq a => [a ->  [a ->  Bool
isPrefixOf [] _ True
isPrefixOf [] False
isPrefixOf (x : xs) (y : ysx == y && isPrefixOf xs ys

  isSuffixOf :: Eq a => [a ->  [a ->  Bool
isSuffixOf x y reverse x `isPrefixOf` reverse y


module Maybe where
  import qualified List
import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ BR
HASKELL
      ↳ COR

mainModule List
  ((isSuffixOf :: [Ordering ->  [Ordering ->  Bool) :: [Ordering ->  [Ordering ->  Bool)

module List where
  import qualified Maybe
import qualified Prelude

  isPrefixOf :: Eq a => [a ->  [a ->  Bool
isPrefixOf [] vw True
isPrefixOf vx [] False
isPrefixOf (x : xs) (y : ysx == y && isPrefixOf xs ys

  isSuffixOf :: Eq a => [a ->  [a ->  Bool
isSuffixOf x y reverse x `isPrefixOf` reverse y


module Maybe where
  import qualified List
import qualified Prelude



Cond Reductions:
The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ BR
    ↳ HASKELL
      ↳ COR
HASKELL
          ↳ Narrow

mainModule List
  (isSuffixOf :: [Ordering ->  [Ordering ->  Bool)

module List where
  import qualified Maybe
import qualified Prelude

  isPrefixOf :: Eq a => [a ->  [a ->  Bool
isPrefixOf [] vw True
isPrefixOf vx [] False
isPrefixOf (x : xs) (y : ysx == y && isPrefixOf xs ys

  isSuffixOf :: Eq a => [a ->  [a ->  Bool
isSuffixOf x y reverse x `isPrefixOf` reverse y


module Maybe where
  import qualified List
import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ BR
    ↳ HASKELL
      ↳ COR
        ↳ HASKELL
          ↳ Narrow
            ↳ AND
QDP
                ↳ QDPSizeChangeProof
              ↳ QDP
              ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_asAs(True, :(wu260, wu261), :(wu270, wu271), ba) → new_asAs(new_esEs(wu260, wu270, ba), wu261, wu271, ba)

The TRS R consists of the following rules:

new_esEs(wu260, wu270, ty_Integer) → new_esEs10(wu260, wu270)
new_esEs11(wu17, wu200, dd, de) → error([])
new_esEs7(wu17, wu200, dc) → error([])
new_esEs(wu260, wu270, app(ty_Maybe, bh)) → new_esEs6(wu260, wu270, bh)
new_esEs(wu260, wu270, ty_Char) → new_esEs12(wu260, wu270)
new_esEs1(wu17, wu200, ce, cf) → error([])
new_esEs5(EQ, EQ) → True
new_esEs5(GT, GT) → True
new_esEs3(wu17, wu200) → error([])
new_esEs5(LT, GT) → False
new_esEs5(EQ, GT) → False
new_esEs5(GT, LT) → False
new_esEs5(GT, EQ) → False
new_esEs(wu260, wu270, app(app(app(ty_@3, be), bf), bg)) → new_esEs4(wu260, wu270, be, bf, bg)
new_esEs(wu260, wu270, ty_Ordering) → new_esEs5(wu260, wu270)
new_esEs6(wu17, wu200, cd) → error([])
new_esEs(wu260, wu270, ty_Double) → new_esEs0(wu260, wu270)
new_esEs(wu260, wu270, app(app(ty_@2, bb), bc)) → new_esEs1(wu260, wu270, bb, bc)
new_esEs(wu260, wu270, ty_Bool) → new_esEs13(wu260, wu270)
new_esEs5(LT, LT) → True
new_esEs13(wu17, wu200) → error([])
new_esEs5(LT, EQ) → False
new_esEs(wu260, wu270, app(app(ty_Either, cb), cc)) → new_esEs11(wu260, wu270, cb, cc)
new_esEs5(EQ, LT) → False
new_esEs8(wu17, wu200) → error([])
new_esEs12(wu17, wu200) → error([])
new_esEs4(wu17, wu200, cg, da, db) → error([])
new_esEs(wu260, wu270, app(ty_Ratio, bd)) → new_esEs2(wu260, wu270, bd)
new_esEs9(wu17, wu200) → error([])
new_esEs(wu260, wu270, app(ty_[], ca)) → new_esEs7(wu260, wu270, ca)
new_esEs(wu260, wu270, ty_Float) → new_esEs8(wu260, wu270)
new_esEs(wu260, wu270, ty_@0) → new_esEs9(wu260, wu270)
new_esEs10(wu17, wu200) → error([])
new_esEs2(wu17, wu200, df) → error([])
new_esEs0(wu17, wu200) → error([])
new_esEs(wu260, wu270, ty_Int) → new_esEs3(wu260, wu270)

The set Q consists of the following terms:

new_esEs(x0, x1, app(ty_Ratio, x2))
new_esEs(x0, x1, ty_Float)
new_esEs5(EQ, GT)
new_esEs5(GT, EQ)
new_esEs(x0, x1, ty_Char)
new_esEs8(x0, x1)
new_esEs(x0, x1, ty_Integer)
new_esEs5(GT, GT)
new_esEs9(x0, x1)
new_esEs(x0, x1, ty_Double)
new_esEs(x0, x1, app(app(ty_Either, x2), x3))
new_esEs11(x0, x1, x2, x3)
new_esEs5(LT, GT)
new_esEs5(GT, LT)
new_esEs5(EQ, LT)
new_esEs5(LT, EQ)
new_esEs1(x0, x1, x2, x3)
new_esEs4(x0, x1, x2, x3, x4)
new_esEs5(EQ, EQ)
new_esEs(x0, x1, ty_Ordering)
new_esEs5(LT, LT)
new_esEs12(x0, x1)
new_esEs7(x0, x1, x2)
new_esEs(x0, x1, ty_@0)
new_esEs(x0, x1, app(ty_[], x2))
new_esEs13(x0, x1)
new_esEs(x0, x1, ty_Int)
new_esEs(x0, x1, app(ty_Maybe, x2))
new_esEs2(x0, x1, x2)
new_esEs(x0, x1, app(app(ty_@2, x2), x3))
new_esEs3(x0, x1)
new_esEs10(x0, x1)
new_esEs0(x0, x1)
new_esEs(x0, x1, ty_Bool)
new_esEs6(x0, x1, x2)
new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4))

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ BR
    ↳ HASKELL
      ↳ COR
        ↳ HASKELL
          ↳ Narrow
            ↳ AND
              ↳ QDP
QDP
                ↳ QDPSizeChangeProof
              ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_isPrefixOf(wu17, wu16, wu20, :(wu1910, wu1911), ba) → new_isPrefixOf(wu17, wu16, new_flip(wu20, wu1910, ba), wu1911, ba)

The TRS R consists of the following rules:

new_flip(wu16, wu17, ba) → :(wu17, wu16)

The set Q consists of the following terms:

new_flip(x0, x1, x2)

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ BR
    ↳ HASKELL
      ↳ COR
        ↳ HASKELL
          ↳ Narrow
            ↳ AND
              ↳ QDP
              ↳ QDP
QDP
                ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

new_isPrefixOf0(wu16, wu17, :(wu180, wu181), wu19, ba) → new_isPrefixOf0(new_flip(wu16, wu17, ba), wu180, wu181, wu19, ba)

The TRS R consists of the following rules:

new_flip(wu16, wu17, ba) → :(wu17, wu16)

The set Q consists of the following terms:

new_flip(x0, x1, x2)

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: